/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package parserxml;

import java.util.*;
import java.util.ArrayList;

/**
 *
 * @author Jacob
 */
public class TablaSQL {

  private String nombre;
  private HashSet<String> clavesPK;
  private HashMap<String, Boolean> atributos;
  private HashMap<String, Boolean> clavesFK;
  private ArrayList<HashMap<String, String>> filas;

  public TablaSQL(String nombre) {
    this.nombre = nombre;
    this.clavesPK = new HashSet<String>();
    this.atributos = new HashMap<String, Boolean>();
    this.clavesFK = new HashMap<String, Boolean>();
    this.filas = new ArrayList<HashMap<String, String>>();
  }

  public String getNombre() {
    return nombre;
  }
  public void setNombre(String nombre) {
    this.nombre = nombre;
  }

  public void addAtributo(String nombreAtributo, Boolean requerido) {
    this.atributos.put(nombreAtributo,requerido);
  }
  public boolean hasAtributo(String nonmbreAtributo) {
    return this.atributos.containsKey(nonmbreAtributo);
  }
  public boolean isAtributoRequerido(String nombreAtributo) {
    return this.atributos.get(nombreAtributo);
  }
  public Iterator<String> getAllAtributos() {
    return atributos.keySet().iterator();
  }

  public HashSet<String> getClavePK() {
    return clavesPK;
  }
  public void setClavePK(HashSet<String> clavesPK) {
    this.clavesPK = clavesPK;
  }
  public void addClavePK(String clave) {
    this.clavesPK.add(clave);
  }

  /**
   * Retorna true si el valor ya esta incluido en la tabla
   *
   * @param valor El valor a chequear
   */
  public boolean hasFila(HashMap<String, String> fila) {
    return filas.contains(fila);
  }

  public HashMap<String, String> getFilaConClave(String columnaClave, String clave) {
    Iterator<HashMap<String, String>> iteFilas = filas.iterator();
    HashMap<String, String> fila;
    while (iteFilas.hasNext()) {
      fila = iteFilas.next();
      if (fila.get(columnaClave).equals(clave)) {
        return fila;
      }
    }
    return null;
  }

  /**
   * Agrega un nuevo valor en la tabla
   * 
   * @param valor El valor a agregar
   */
  public void addFila(HashMap<String, String> fila) {
    filas.add(fila);
  }
}
